const jwt = require('jsonwebtoken');
const { SECRET_KEY } = require('../utils/jwt');
const Response = require('../utils/response');

// 用户认证中间件
const authUser = (req, res, next) => {
  // 从请求头获取 token
  const token = req.headers.authorization?.split(' ')[1];

  try {
    // 验证 token，使用正确的 SECRET_KEY
    const decoded = jwt.verify(token, SECRET_KEY);
    // 将用户信息添加到请求对象
    req.user = decoded;
    next();
  } catch (error) {
    if (error.name === 'TokenExpiredError') {
      return res.json(Response.error('登录已过期，请重新登录'));
    }
    // 其他错误直接传递给下一个中间件
    next();
  }
};

// 管理员认证中间件
const authAdmin = (req, res, next) => {
  const token = req.headers.authorization?.split(' ')[1];

  try {
    const decoded = jwt.verify(token, SECRET_KEY);
    if (decoded.role !== 'admin') {
      return res.json(Response.error('无权访问'));
    }
    req.user = decoded;
    next();
  } catch (error) {
    if (error.name === 'TokenExpiredError') {
      return res.json(Response.error('登录已过期，请重新登录'));
    }
    next();
  }
};

module.exports = {
  authUser,
  authAdmin
}; 